package com.mcptt.http.operator.addr;


import java.io.StringReader;
import java.util.List;
import java.util.Vector;

import org.xmlpull.v1.XmlPullParser;

import com.cloudptt.api.comm.CheckData;
import com.mcptt.db.model.GroupInfo;
import com.mcptt.db.model.UserInfo;

import android.util.Log;
import android.util.Xml;

public class AddressParser 
{
	private static String Key_Groups = "groups";
	private static String Key_Group = "group";
	private static String Key_Users = "users";
	private static String Key_User = "user";
	private static String Key_Id = "id";
	private static String Key_Name = "name";
	private static String Key_Type = "type";
	
	public AddressParser()
	{}
	public static List<GroupInfo> parseAddressStr(String bodyStr) {
		Log.e("OperDB ", "==== dealGrpInfo    "+bodyStr);
		XmlPullParser parser = Xml.newPullParser();

		List<GroupInfo> groupList = null;
		GroupInfo groupInfo = null;
		List<UserInfo> userInfoList = null;

		try {
			parser.setInput(new StringReader(bodyStr));
			int eventType = parser.getEventType();

			while (eventType != XmlPullParser.END_DOCUMENT) {

				String name = parser.getName();

				switch (eventType) {
				case XmlPullParser.START_DOCUMENT:// 文档�?始事�?,可以进行数据初始化处�?
					break;

				case XmlPullParser.START_TAG:// �?始元素事�?

					if (name.equalsIgnoreCase(Key_Groups)) 
					{
						groupList = new Vector<GroupInfo>();
					} 
					else if (name.equalsIgnoreCase(Key_Group)) 
					{
						 String num = parser.getAttributeValue(null, Key_Id);
	                     String userName = parser.getAttributeValue(null, Key_Name);
	                     String value = parser.getAttributeValue(null, Key_Type);
	                     int type = CheckData.parseInt(value);

						 int attr = 0;
//	                     groupInfo = new GroupInfo(type,userName,num,attr);
                    }
					else if (name.equalsIgnoreCase(Key_Users)) 
					{
						userInfoList = new Vector<UserInfo>();
					} 
					else if (name.equalsIgnoreCase(Key_User)) 
					{
						 String num = parser.getAttributeValue(null, Key_Id);
	                     String userName = parser.getAttributeValue(null, Key_Name);
	                     String value = parser.getAttributeValue(null, Key_Type);
	                     int type = CheckData.parseInt(value);
	                     
	                     String groupId = groupInfo.getAddrId();
//	                     UserInfo info = new UserInfo(type,userName,num,groupId);
//	                     userInfoList.add(info);
                    }

					break;

				case XmlPullParser.END_TAG:// 结束元素事件
					if (name.equalsIgnoreCase(Key_Group)) 
					{
						 if(groupInfo != null)
						 {
							 groupInfo.setMemberList(userInfoList);
							 groupList.add(groupInfo);
						 }
                    }
					else if (name.equalsIgnoreCase(Key_Groups)) 
					{
						
					} 
					break;
				}

				eventType = parser.next();
			}
			return groupList;

		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}
	
//	public void parseAddressStr(InputStream in) {
//		XmlPullParser parser = Xml.newPullParser();
//
//		GroupInfo groupInfo = null;
//		List<UserInfo> userInfoList = null;
//
//		try {
//			parser.setInput(in, "UTF-8");
//			int eventType = parser.getEventType();
//
//			while (eventType != XmlPullParser.END_DOCUMENT) {
//
//				String name = parser.getName();
//
//				switch (eventType) {
//				case XmlPullParser.START_DOCUMENT:// 文档�?始事�?,可以进行数据初始化处�?
//					break;
//
//				case XmlPullParser.START_TAG:// �?始元素事�?
//
//					if (name.equalsIgnoreCase(Key_Groups)) 
//					{
//						groupList = new Vector<GroupInfo>();
//					} 
//					else if (name.equalsIgnoreCase(Key_Group)) 
//					{
//						 String num = parser.getAttributeValue(null, Key_Id);
//	                     String userName = parser.getAttributeValue(null, Key_Name);
//	                     String value = parser.getAttributeValue(null, Key_Type);
//	                     int type = CheckData.parseInt(value);
//	                     
//	                     groupInfo = new GroupInfo(type,userName,num,false); 
//                    }
//					else if (name.equalsIgnoreCase(Key_Users)) 
//					{
//						userInfoList = new Vector<UserInfo>();
//					} 
//					else if (name.equalsIgnoreCase(Key_User)) 
//					{
//						 String num = parser.getAttributeValue(null, Key_Id);
//	                     String userName = parser.getAttributeValue(null, Key_Name);
//	                     String value = parser.getAttributeValue(null, Key_Type);
//	                     int type = CheckData.parseInt(value);
//	                     
//	                     String groupId = groupInfo.getMcId();
//	                     UserInfo info = new UserInfo(type,userName,num,groupId); 
//	                     userInfoList.add(info);
//                    }
//
//					break;
//
//				case XmlPullParser.END_TAG:// 结束元素事件
//					if (name.equalsIgnoreCase(Key_Group)) 
//					{
//						 if(groupInfo != null)
//						 {
//							 groupInfo.setUserList(userInfoList);
//						 }
//                    }
//					else if (name.equalsIgnoreCase(Key_Groups)) 
//					{
//						groupList.add(groupInfo);
//					} 
//					break;
//				}
//
//				eventType = parser.next();
//			}
//
//		} catch (Exception e) {
//			e.printStackTrace();
//		}
//	}
	
//	@Override
//	public String toString() {
//		// TODO Auto-generated method stub
//		if(groupList != null)
//		{
//			return groupList.toString();
//		}
//		return "";
//	}

}
